#include<iostream>
#include<algorithm>
using namespace std;
const int N=1010;
int n,m;
int l[N],r[N];

int pos=0;
int disc[N*4];//离散化数据

int dp[N*4];
bool mp[N*2];
int find(int cur)
{
	int left=1,right=pos;
	while(left<right)
	{
		int mid=(left+right)/2;
		if(disc[mid]>=cur)
		{
			right=mid;
		}
		else
		{
			left=mid+1;
		}
	}
	return left;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		cin>>l[i]>>r[i];
		disc[++pos]=l[i];
		disc[++pos]=r[i]+1;
	}

	sort(disc+1,disc+1+pos);
	pos=unique(disc+1,disc+1+pos)-(disc+1);

	for(int i=1;i<=m;i++)
	{
		int left=find(l[i]),right=find(r[i]+1)-1;
		for(int j=left;j<=right;j++)
		{
			dp[j]=i;
		}
	}

	int ret=0;
	for(int i=1;i<=pos;i++)
	{
		if(!dp[i]) continue;
		if(mp[dp[i]]) continue;

		ret++;
		mp[dp[i]]=true;
	}
	cout<<ret<<endl;
}